Справочное руководство по TDMS 7.0 API
VB Script
Смотри также Отправить замечание

Glossary Item Box

Исходный текст

Option Explicit
Call AddFileToObj(ThisObject)

'==============================================================================
' Добавить в состав объекта выбранные пользователем файлы
'==============================================================================
Sub AddFileToObj(Obj)

        Dim SelFileDlg, FName, FShortName, FDef, FExtension, NewFile, StrMsg,_
                 RetVal, StrErr, flag, count

        ' Открываем диалог выбора файла
        Set SelFileDlg = ThisApplication.Dialogs.FileDlg
        SelFileDlg.Filter = "Все файлы (*.*)|*.*||"
        RetVal = SelFileDlg.Show
        
        'Если пользователь отменил диалог, выйти из подпрограммы
        If RetVal <> TRUE Then Exit Sub    
        
        Set NewFile = Nothing
        count = 0
        
        'Для каждого выбранного файла проверить, может ли он быть добавлен к объекту
        For Each FName In SelFileDlg.FileNames
                
                ' Получаем расширение выбранного файла
                FExtension = "*." & Right(FName, Len(Fname) - InStrRev(FName, "."))
                flag = FALSE
                
                'Проверить, есть ли такое расширение у типов файлов, определенных в типе объекта
                For Each FDef In Obj.ObjectDef.FileDefs
                        
                        ' Если строка расширения найдена, добавим файл к объекту
                        If InStr(FDef.Extensions, FExtension) <> 0 Then
                                flag = TRUE 'файл разрешен для добавления (расширение найдено)

                                'Создать новый пустой объект в файловом составе
                                Set NewFile = Obj.Files.Create(FDef.SysName)
                                'Заметим: вызов метода Create приводит к генерации событий File_BeforeAdd, File_Added,
                                'метода CheckIn - к генерации File_BeforeCheckIn, File_CheckedIn
                                
                                'Теперь надо загрузить файл в файловое хранилище. Если файл с таким именем 
                                'уже существует, будет выдана ошибка.
                                
                                On Error Resume Next 'отключить перехват ошибок
                                
                                'попытка загрузить файл
                                NewFile.CheckIn FName
                                
                                'Если ошибка была, сообщим что файл с таким именем уже существует
                                If Err<>0 Then
                                        FShortName = Right(FName, Len(Fname) - InStrRev(FName, "\"))
                                        MsgBox "Файл """ & FShortName & """ уже есть в составе объекта.", vbInformation
                                        
                                        'удалить пустой файл
                                        NewFile.Erase 
                                        'Генерируются события File_BeforeErase, File_Erased!
                                Else
                                        StrMsg = StrMsg & Chr(13) & FName
                                        count = count+1
                                End If
                                
                                On Error Goto 0 'Восстановить перехват ошибок
                                Exit For
                        End If
                Next 'For Each FDef...
                
                'Добавить расширение файла в сообщение об ошибке
                If flag <> TRUE Then StrErr = StrErr & Chr(13) & FExtension 

        Next 'For Each FName...
        
        
        'Сообщить результаты
        If StrMsg <> "" Then 
                MsgBox "К объекту были добавлены следущие файлы:" & StrMsg, vbInformation
        End If
        
        If StrErr <> "" Then
                MsgBox "Файлы следующих типов не разрешены для добавления к объекту:" &_
                StrErr, vbInformation
        End If
        
        
        MsgBox count & " файлов добавлено к объекту.", vbInformation
End Sub
'==============================================================================
© 2023 CSoft Development. Все права защищены.